/**
 * 测试禁言功能
 * 执行命令：node scripts/test-chat-ban.js
 */

const { prisma } = require('../config/prisma');
const UserPrisma = require('../models/UserPrisma');

async function testChatBanFeature() {
  try {
    console.log('🧪 开始测试禁言功能...\n');

    // 1. 查找一个测试用户
    console.log('1. 查找测试用户...');
    const users = await prisma.users.findMany({
      take: 1,
      orderBy: { created_at: 'desc' }
    });

    if (users.length === 0) {
      console.log('❌ 没有找到用户，请先创建用户');
      return;
    }

    const testUser = users[0];
    console.log(`✅ 找到测试用户: ID=${testUser.id}, nickname=${testUser.nickname || '未设置'}`);

    // 2. 测试检查禁言状态
    console.log('\n2. 测试检查禁言状态...');
    const initialBanStatus = await UserPrisma.isChatBanned(testUser.id);
    console.log(`✅ 初始禁言状态: ${initialBanStatus ? '已禁言' : '正常'}`);

    // 3. 测试禁言功能
    console.log('\n3. 测试禁言功能...');
    await UserPrisma.banChat(testUser.id);
    const afterBanStatus = await UserPrisma.isChatBanned(testUser.id);
    console.log(`✅ 禁言后状态: ${afterBanStatus ? '已禁言' : '正常'}`);

    // 4. 测试解禁功能
    console.log('\n4. 测试解禁功能...');
    await UserPrisma.unbanChat(testUser.id);
    const afterUnbanStatus = await UserPrisma.isChatBanned(testUser.id);
    console.log(`✅ 解禁后状态: ${afterUnbanStatus ? '已禁言' : '正常'}`);

    // 5. 验证数据库字段
    console.log('\n5. 验证数据库字段...');
    const userWithBanField = await prisma.users.findUnique({
      where: { id: testUser.id },
      select: { id: true, nickname: true, chat_banned: true }
    });
    console.log('✅ 用户数据:', userWithBanField);

    // 6. 测试UserPrisma模型的toJSON方法
    console.log('\n6. 测试UserPrisma模型的toJSON方法...');
    const userModel = await UserPrisma.findById(testUser.id);
    const jsonData = userModel.toJSON();
    console.log('✅ toJSON包含chat_banned字段:', 'chat_banned' in jsonData);
    console.log('✅ chat_banned值:', jsonData.chat_banned);

    console.log('\n🎉 所有测试通过！禁言功能正常工作。');

  } catch (error) {
    console.error('❌ 测试失败:', error);
  } finally {
    await prisma.$disconnect();
  }
}

// 执行测试
if (require.main === module) {
  testChatBanFeature()
    .then(() => {
      console.log('\n✅ 测试完成');
      process.exit(0);
    })
    .catch((error) => {
      console.error('\n💥 测试执行失败：', error);
      process.exit(1);
    });
}

module.exports = { testChatBanFeature };
